/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package BD;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author CORE
 */
public class pedidos_Itens extends bd {
/*id_produtos, descricao, custo, qtdatual, unidade, volume*/
    private int id_pedido_itens  = 0   ;
    private int id_pedidos       = 0   ;
    private int id_pizzas        = 0   ;
    private int id_produtos      = 0   ;
    private float valor          = 0   ;
    private String desc_pizzas   = "";
    private String desc_pd_pz    = "";
    private pizzas pizzas  ;
    private produtos produtos;

    public String getDesc_pd_pz() {
        return desc_pd_pz;
    }

    public void setDesc_pd_pz(String desc_pd_pz) {
        this.desc_pd_pz = desc_pd_pz;
    }

    
    public int getId_produtos() {
        return id_produtos;
    }

    public void setId_produtos(int id_produtos) {
        this.id_produtos = id_produtos;
    }

    public float getValor() {
        return valor;
    }

    public void setValor(float valor) {
        this.valor = valor;
    }

    public produtos getProdutos() {
        return produtos;
    }

    public void setProdutos(produtos produtos) {
        this.produtos = produtos;
    }

    public pizzas getPizzas() {
        return pizzas;
    }

    public void setPizzas(pizzas pizzas) {
        this.pizzas = pizzas;
    }
    public int getId_pedido_itens() {
        return id_pedido_itens;
    }

    public void setId_pedido_itens(int id_pedido_itens) {
        this.id_pedido_itens = id_pedido_itens;
    }

    public int getId_pedidos() {
        return id_pedidos;
    }

    public void setId_pedidos(int id_pedidos) {
        this.id_pedidos = id_pedidos;
    }

    public int getId_pizzas() {
        return id_pizzas;
    }

    public void setId_pizzas(int id_pizzas) {
        this.id_pizzas = id_pizzas;
    }

    public String getDesc_pizzas() {
        return desc_pizzas;
    }

    public void setDesc_pizzas(String desc_pizzas) {
        this.desc_pizzas = desc_pizzas;
    }


    public boolean incluir() {            
        try {
            if (!estaConectado()) 
                conecta();          
            stmt = getConexao().createStatement();          
//id_pedidos_itens, id_pedidos, id_pizzas, id_produtos, valor)            
            sql = "INSERT INTO pedidos_itens VALUES ((select coalesce(max(id_pedidos_itens)+1,1) from pedidos_itens),"
                    +"'"+ Integer.toString(this.getId_pedidos())+ "', "                    
                    +"'"+ Integer.toString(this.getId_pizzas())+"',"            
                    +"'"+ Integer.toString(this.getId_produtos())+"',"            
                    +"'"+ Float.toString(this.getValor())+"');"            ;
            stmt.executeUpdate(sql);
            stmt.close();
            if(this.getProdutos() != null)
                if(this.getProdutos().getId_produtos() > 0)
                    this.getProdutos().alterarQuandidade(- 1);

            return true;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível executar a Query \n" + objErro.getMessage());
            return false;
        }
    }


    public ResultSet consultar() {
        if (!estaConectado()) {
            conecta();
        }
        try {
            stmt = getConexao().createStatement();
            sql = " SELECT pedidos_itens.*,sabores.descricao,produtos.descricao,     "+
                  " COALESCE(sabores.descricao,produtos.descricao)as desc_pd_pz      "+  
                  " FROM pedidos_itens                                               "+
                  " left join pizzas on pizzas.id_pizzas=pedidos_itens.id_pizzas     "+
                  " left join sabores on pizzas.id_sabores=sabores.id_sabores        "+
                  " left join produtos on produtos.id_produtos=pedidos_itens.id_produtos"+
                  " WHERE  id_pedidos = "+Integer.toString(this.id_pedidos);
            
//            if (! this.descricao.equals("") ){
//            sql = sql + " AND descricao like  '%"+this.getDescricao()+"%';";
//            }
            
            rs = stmt.executeQuery(sql);
            return rs;
            
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "ssNão foi possível executar a Query \n" + objErro.getMessage());
            return null;
        }
        
    }
    public ArrayList<pedidos_Itens> getItens(){
        ArrayList itens = new ArrayList();
        ArrayList<pizzas> ltpz = new ArrayList<pizzas>();
        ArrayList<produtos> ltpr = new ArrayList<produtos>();
        rs = this.consultar();
        try{
            while(rs.next()){
                pedidos_Itens    obj   = new pedidos_Itens();
                pizzas           objpz = new pizzas();
                produtos         objprod = new produtos();
                obj.setId_pedido_itens(rs.getInt("id_pedidos_itens"));
                obj.setId_pedidos(rs.getInt("id_pedidos"));
                obj.setId_pizzas(rs.getInt("id_pizzas"));
                obj.setDesc_pizzas(rs.getString("descricao"));
                obj.setValor(rs.getFloat("valor"));
                obj.setDesc_pd_pz(rs.getString("desc_pd_pz"));                
                objpz.setId_pizzas(rs.getInt("id_pizzas"));
                ltpz =  objpz.getItens();
                if(ltpz.size() > 0)
                    obj.setPizzas(ltpz.get(0));
                
                objprod.setId_produtos(rs.getInt("id_produtos"));
                ltpr = objprod.getItens();
                if(ltpr.size() > 0)
                    obj.setProdutos(ltpr.get(0));
                
                itens.add(obj);               
            }
            stmt.close();
            
            disconecta();
        }
        catch(SQLException erro){
            msgErro = erro.getMessage();            
            JOptionPane.showMessageDialog(null, erro.getMessage());
        }        
        return itens;
    }
    
    public boolean excluir() {
        if (!estaConectado()) {
            conecta();
        }        
        try {
            stmt = getConexao().createStatement();                      
            sql ="DELETE FROM pedidos_itens "+                  
                 "WHERE id_pedidos_itens = "+ Integer.toString(this.id_pedido_itens);            
            stmt.execute(sql);                        
            return  true;
        } catch (SQLException objErro) {
            JOptionPane.showMessageDialog(null, "Não foi possível  a Query \n" + objErro.getMessage());
            return false;
        }      

    } 
    public static void main(String []args){
//         sabores sab = new sabores();
         pedidos_Itens pedi = new pedidos_Itens();
         pedi.setId_pedidos(6);
         pedi.setId_pizzas(1);

//         pedi.incluir();
         
        ArrayList<pedidos_Itens> list = new ArrayList<pedidos_Itens>();
        list = pedi.getItens();
        for (int i = 0; i < list.size(); i++) {
            JOptionPane.showMessageDialog(null, list.get(i).getDesc_pizzas());
            
        }

//        sab.setId_sabores(1);
//        sab.setDescricao("portugueza");
//        sab.incluir();
//        sab.alterar();
//        sab.excluir();
    }

    
}
